package com.pn.mapper;

import com.pn.entity.Product;
import com.pn.entity.Result;
import com.pn.page.Page;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface ProductMapper {


    /**
     * 分页查询商品
     *
     * @param page    分页对象
     * @param product 封装条件参数类
     * @return 商品集合
     */
    List<Product> selectProductPage(@Param("page") Page page, @Param("product") Product product);

    /**
     * 查询商品行数
     *
     * @param product 封装条件参数类
     * @return 行数
     */
    Integer selectProductRowCount(Product product);

    /**
     * 添加商品
     *
     * @param product 商品实体类
     * @return 影响行数
     */
    int insertProduct(Product product);

    /**
     * 查询商品是否存在
     *
     * @param productNum 商品型号
     * @return 商品
     */
    Product selectProductByNum(String productNum);

    /**
     * 修改商品上下架状态
     *
     * @param product 封装商品id和状态参数类
     * @return 修改成功与否
     */
    int updateProductState(Product product);

    /**
     * 删除商品
     *
     * @param productIds 商品id集合
     * @return 影响行数
     */
    int deleteProductByIds(List<Integer> productIds);

    /**
     * 修改商品信息
     *
     * @param product   商品信息封装类
     * @param productId 商品id
     * @return 影响行数
     */
    int updateProductById(@Param("product") Product product, @Param("productId") Integer productId);

    /**
     * 修改商品库存
     *
     * @param productId 商品id
     * @param invent    库存数量
     * @return 影响行数
     */
    int updateInventById(@Param("productId") Integer productId, @Param("invent") Integer invent);

    /**
     * 查询商品库存数量
     *
     * @param productId 商品id
     * @return 库存数量
     */
    Integer findInventById(Integer productId);
}